package org.pray.activity.invoke;

import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

/**
 * CGLProxy
 *
 * @author 春江花朝秋月夜
 * @since 2024/3/17 15:27
 */
public class CGLProxy implements MethodInterceptor{//首先还是编写我们的代理逻辑

        private final Object target;   //这些和之前JDK动态代理写法是一样的

        public CGLProxy(Object target) {
            this.target = target;
        }

        @Override   //我们也是需要在这里去编写我们的代理逻辑
        public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
            System.out.println("现在是由CGLib进行代理操作！"+o.getClass());
            return method.invoke(target, objects);   //也是直接调用代理对象的方法即可
        }
}
